home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 July / EnigmA AMIGA RUN 09 (1996)(G.R. Edizioni)(IT)[!][issue 1996-07 & 08][EARSAN CD VIII].iso / earcd / gui / argue03.lha / Argue03 / src / argue.e next >
Text File  |  1996-05-14  |  10KB  |  334 lines

  1.  
  2. /*
  3.  
  4.                                    ARGUE 0.3
  5.  
  6.                (c) Thorsten Stockmeier flavour@aventure.teuto.de
  7.  
  8.                                THIS IS EMAILWARE!
  9.  
  10.                  This source is Freeware. Don't alter or sell ;)
  11.  
  12.                 Utilizes my NiceGUI-system (which will certainly
  13.                        cause it to crash everywhere ;-)))
  14.  
  15.                                                                            */
  16.  
  17. OPT OSVERSION=39
  18.  
  19. CONST WINDOWX=100
  20.  
  21. MODULE 'gadtools','intuition/screens','intuition/intuition',
  22.        'libraries/gadtools','intuition/intuitionbase','gadgets/gradientslider',
  23.        'intuition/gadgetclass','asl','libraries/asl'
  24.  
  25. DEF ib:PTR TO intuitionbase,realx,gadgetlist=NIL,wnd:PTR TO window,context=NIL,startx,starty,
  26.     gadwidth=WINDOWX,gadheight=20,visual=NIL,gadcount=NIL,dr:PTR TO drawinfo,realgad[200]:LIST,
  27.     scr:PTR TO screen,raus,class,code,gad:PTR TO gadget,realnum,a,
  28.  
  29.  
  30.     flags[300]:LIST,
  31.     key[300]:LIST,
  32.     important[300]:LIST,
  33.     gadd[300]:LIST,
  34.     mustkey[300]:LIST,
  35.     eigentlich[300]:LIST,
  36.  
  37.     begin=NIL,bc=NIL,
  38.     double=1,
  39.     ret=NIL,
  40.     bad=NIL,
  41.     rdarg,
  42.     myargs:PTR TO LONG
  43.  
  44. PROC main()
  45.  
  46.   myargs:=[0,0,0,0,0]
  47.   IF rdarg:=ReadArgs('TEMPLATE/A,UNIX/S,NOSPACES/S',myargs,0)
  48.     main2()
  49.     FreeArgs(rdarg)
  50.   ELSE
  51.     WriteF('Bad arguments.\n')
  52.   ENDIF
  53. ENDPROC ret
  54.  
  55. PROC main2()
  56.   DEF tx[8500]:STRING,cnt=NIL,n
  57.  
  58.   StringF(tx,',\s,\0',myargs[0])
  59.  
  60.   REPEAT
  61.     
  62.     IF StrCmp(tx+cnt,'=',1)
  63.       PutChar(tx+cnt,0)
  64.       begin:=tx+cnt+1
  65.     ENDIF
  66.  
  67.     IF StrCmp(tx+cnt,',',1)
  68.       n:=tx+cnt
  69.       PutChar(n,0)
  70.       INC cnt
  71.       key[bc]:=begin
  72.       INC bc
  73.       eigentlich[bc]:=tx+cnt
  74.       begin:=tx+cnt
  75.     ENDIF
  76.  
  77.   
  78.     IF CtrlC() THEN JUMP hi
  79.     INC cnt
  80.   UNTIL (Char(tx+cnt)=0)
  81.  
  82.   key[bc]:=tx+cnt
  83.   INC bc
  84.  
  85.   FOR n:=1 TO bc-2
  86.     flags[n]:=STRING_KIND
  87.  
  88.     IF InStr(key[n],'/A',0)<>-1 THEN important[n]:=NG_HIGHLABEL ELSE important[n]:=0
  89.     IF InStr(key[n],'/N',0)<>-1 THEN flags[n]:=INTEGER_KIND
  90.     IF InStr(key[n],'/S',0)<>-1 THEN flags[n]:=CHECKBOX_KIND
  91.     IF InStr(key[n],'/K',0)<>-1 THEN mustkey[n]:=TRUE ELSE mustkey[n]:=FALSE
  92.  
  93.     IF InStr(key[n],'/',0) THEN PutChar(key[n]+InStr(key[n],'/',0),0)
  94.   ENDFOR
  95.  
  96.   mai()
  97.  
  98. ENDPROC ret
  99.  
  100. PROC mai()
  101.   DEF n,io
  102. hi:
  103.   ib:=intuitionbase
  104.  
  105.   /* realx gadwidth */
  106.  
  107.   IF gadtoolsbase:=OpenLibrary('gadtools.library',37)
  108.  
  109.     IF scr:=LockPubScreen(NIL)
  110.  
  111.       IF visual:=GetVisualInfoA(scr,NIL)
  112.  
  113.         IF context:=CreateContext({gadgetlist})
  114.  
  115.           IF dr:=GetScreenDrawInfo(scr)
  116.  
  117.             realx:=TextLength(scr.rastport,'WWWWWWWWWWWWWWWWWWWWWWWWWWWW',STRLEN)
  118.             gadwidth:=realx
  119.  
  120.             WHILE raus=0
  121.               IF CtrlC() THEN raus:=1
  122.               startx:=(scr.wborleft+3)
  123.               starty:=(scr.wbortop+Int(scr.rastport+58)+3)
  124.               gadheight:=starty-scr.wbortop+Rnd(10)+2
  125.  
  126.               /* Put your gadget definitions ONLY under this comment! */
  127.               /********************************************************/
  128.  
  129.               IF bad THEN newbutton(TEXT_KIND,NIL,[GTTX_TEXT,'PARSING ERROR!',GTTX_BORDER,TRUE,0])
  130.  
  131.               FOR n:=1 TO bc-2
  132.                 IF flags[n]=CHECKBOX_KIND
  133.                   gadd[n]:=extnewbutton((realx/3*2)-CHECKBOX_WIDTH,realx/3,flags[n],key[n],NIL,n)
  134.                 ELSE
  135.                   gadd[n]:=extnewbutton(0,realx/3,flags[n],key[n],NIL,n)
  136.                 ENDIF
  137.  
  138.                 IF (starty+((gadcount+1)*(gadheight+3)+3))>scr.height
  139.                   INC double
  140.                   startx:=startx+gadwidth
  141.                   gadcount:=0
  142.                 ENDIF
  143.  
  144.               ENDFOR
  145.  
  146.               INC gadcount       
  147.  
  148.               extnewbutton(0,realx/2,BUTTON_KIND,'OK!',NIL,100)
  149.               DEC gadcount
  150.               extnewbutton(realx/2,0,BUTTON_KIND,'About...',NIL,101)
  151.               /********************************************************/
  152.               /* Put your gadget definitions ONLY above this comment! */
  153.             
  154.               IF wnd:=OpenW(ib.mousex,ib.mousey,(gadwidth+(2*startx)+2)*double,IF double=1 THEN (starty+(gadcount*(gadheight+3)+2)) ELSE scr.height,IDCMP_RAWKEY+CYCLEIDCMP+ARROWIDCMP+IDCMP_NEWSIZE+IDCMP_CLOSEWINDOW+IDCMP_GADGETUP,$E,'Argue (c) flavour@aventure.teuto.de',scr,1,gadgetlist,[WA_INNERWIDTH,gadwidth+startx,WA_AUTOADJUST,TRUE,0,NIL])
  155.                
  156.                 Gt_RefreshWindow(wnd,NIL)
  157.                 ActivateWindow(wnd)
  158.  
  159.                 REPEAT
  160.                   IF CtrlC() THEN JUMP uh
  161.  
  162.                   class,code,gad:=pumpdamessage()                  
  163.  
  164.                   IF class=IDCMP_GADGETUP
  165.                     IF gad.gadgetid=100
  166.                       result()
  167.                       JUMP uh
  168.                     ELSEIF gad.gadgetid=101
  169.                       EasyRequestArgs(0,[20,0,NIL,('$VER: Argue 0.4 (14.5.96) by flavour@aventure.teuto.de\n\nThis is a copyrighted product.\n\nProvided "as is" without any warranty.\n\nTHIS IS EMAILWARE! IF YOU ARE ABLE TO\nSEND EMAIL, THE AUTHOR WANTS TO HEAR\nYOUR COMMENTS, HINTS ...'+6),'Yeah, going to mail ya!'],0,NIL)
  170.  
  171.                     ELSEIF gad.gadgetid>=10000
  172.                       IF io:=requ()
  173.                         Gt_SetGadgetAttrsA(gadd[gad.gadgetid-10000+1],wnd,NIL,[GTST_STRING,io,0])
  174.                       ENDIF
  175.                     ENDIF
  176.                   ENDIF
  177.  
  178.                 UNTIL class=IDCMP_CLOSEWINDOW
  179.                 ret:=5
  180. uh:             raus:=1
  181.                 CloseW(wnd)
  182.               ELSE
  183.                 raus:=1
  184.               ENDIF
  185.               FreeScreenDrawInfo(scr,dr)
  186.             ENDWHILE
  187.           ENDIF        
  188.           FreeGadgets(gadgetlist)
  189.         ENDIF
  190.         FreeVisualInfo(visual)
  191.       ENDIF      
  192.       UnlockPubScreen(NIL,scr)
  193.     ENDIF
  194.     CloseLibrary(gadtoolsbase)
  195.   ENDIF
  196. ENDPROC
  197.  
  198. PROC result()
  199.   DEF n,type,string,brave
  200.  
  201.   brave:=(IF myargs[2] THEN '' ELSE ' ')
  202.  
  203.   FOR n:=1 TO bc-2
  204.     string:=0
  205.  
  206.     type:=flags[n]
  207.  
  208.     IF myargs[1]
  209.       SELECT type
  210.         CASE STRING_KIND
  211.           Gt_GetGadgetAttrsA(gadd[n],wnd,NIL,[GTST_STRING,{string},0])
  212.           IF StrLen(string)>0
  213.             IF mustkey[n] THEN WriteF('\s\s\s ',eigentlich[n],brave,string) ELSE WriteF('\s ',string)
  214.           ENDIF
  215.         CASE INTEGER_KIND
  216.           Gt_GetGadgetAttrsA(gadd[n],wnd,NIL,[GTIN_NUMBER,{string},0])
  217.           IF string>0
  218.             IF mustkey[n] THEN WriteF('\s\s\d ',eigentlich[n],brave,string) ELSE WriteF('\d ',string)
  219.           ENDIF
  220.         CASE CHECKBOX_KIND
  221.           Gt_GetGadgetAttrsA(gadd[n],wnd,NIL,[GTCB_CHECKED,{string},0])
  222.           IF string THEN WriteF('\s ',eigentlich[n])
  223.       ENDSELECT
  224.     ELSE
  225.       SELECT type
  226.         CASE STRING_KIND
  227.           Gt_GetGadgetAttrsA(gadd[n],wnd,NIL,[GTST_STRING,{string},0])
  228.           IF StrLen(string)>0
  229.             IF mustkey[n] THEN WriteF('\s="\s" ',eigentlich[n],string) ELSE WriteF('"\s" ',string)
  230.           ENDIF
  231.         CASE INTEGER_KIND
  232.           Gt_GetGadgetAttrsA(gadd[n],wnd,NIL,[GTIN_NUMBER,{string},0])
  233.           IF string>0
  234.             IF mustkey[n] THEN WriteF('\s="\d" ',eigentlich[n],string) ELSE WriteF('"\d" ',string)
  235.           ENDIF
  236.         CASE CHECKBOX_KIND
  237.           Gt_GetGadgetAttrsA(gadd[n],wnd,NIL,[GTCB_CHECKED,{string},0])
  238.           IF string THEN WriteF('\s ',eigentlich[n])
  239.       ENDSELECT
  240.     ENDIF
  241.   ENDFOR
  242.   WriteF('\n')
  243. ENDPROC
  244.  
  245. PROC requ()
  246.   DEF strng,req:PTR TO filerequester
  247.   strng:=NIL
  248.   IF aslbase:=OpenLibrary('asl.library',37)
  249.     IF req:=AllocFileRequest()
  250.       IF RequestFile(req)
  251.         AddPart(req.drawer,req.file,200)
  252.         StringF(strng:=String(250),req.drawer)
  253.       ENDIF
  254.       FreeFileRequest(req)
  255.     ENDIF
  256.     CloseLibrary(aslbase)
  257.   ENDIF
  258.  
  259. ENDPROC strng
  260.  
  261. PROC pumpdamessage()
  262.   DEF cl,cd,ia,msg:PTR TO intuimessage,port
  263.  
  264.   port:=wnd.userport
  265.  
  266.   REPEAT
  267.  
  268.     WaitPort(port)
  269.     msg:=Gt_GetIMsg(port)
  270.  
  271.     cl:=msg.class
  272.     cd:=msg.code
  273.     ia:=msg.iaddress
  274.  
  275.     Gt_ReplyIMsg(msg)
  276.   UNTIL cl<>IDCMP_INTUITICKS
  277.  
  278. ENDPROC cl,cd,ia
  279.  
  280. /*************************************************
  281.  
  282.   DO NOT ALTER THE FUNCTIONS BELOW THIS COMMENT!
  283.  
  284. *************************************************/
  285.  
  286. PROC newbutton(kind,string,taglist)
  287.   DEF g
  288.   IF (g:=(context:=CreateGadgetA(kind,context,
  289.      [startx,starty+(gadcount*(gadheight+3)),gadwidth,gadheight,string,NIL,1000,0,visual,0]:newgadget,
  290.      taglist)))=NIL THEN RETURN 0
  291.   INC realnum
  292.   INC gadcount
  293.   realgad[a++]:=g
  294. ENDPROC g
  295.  
  296. PROC extnewbutton(sx,ex,kind,string,taglist,f)
  297.   DEF g
  298.   IF kind=BUTTON_KIND
  299.     IF (g:=(context:=CreateGadgetA(kind,context,
  300.        [sx+startx,starty+(gadcount*(gadheight+3)),gadwidth-sx-ex,gadheight,string,NIL,f,0,visual,NIL]:newgadget,
  301.        taglist)))=NIL THEN RETURN 0
  302.   ELSEIF kind<>STRING_KIND
  303.     IF (g:=(context:=CreateGadgetA(kind,context,
  304.        [sx+startx,starty+(gadcount*(gadheight+3)),gadwidth-sx-ex,gadheight,string,NIL,f+1000,(IF flags[f]=CHECKBOX_KIND THEN PLACETEXT_LEFT ELSE PLACETEXT_RIGHT)+(IF important[f] THEN NG_HIGHLABEL ELSE 0),visual,NIL]:newgadget,
  305.        taglist)))=NIL THEN RETURN 0
  306.   ELSE
  307.     IF (g:=(context:=CreateGadgetA(BUTTON_KIND,context,
  308.        [startx,starty+(gadcount*(gadheight+3)),realx/6-1,gadheight,'Req',NIL,(10000+realnum),NIL,visual,NIL]:newgadget,
  309.        taglist)))=NIL THEN RETURN 0
  310.     IF (g:=(context:=CreateGadgetA(kind,context,
  311.        [sx+startx+(realx/6),starty+(gadcount*(gadheight+3)),gadwidth-sx-ex-(realx/6),gadheight,string,NIL,f+1000,(IF flags[f]=CHECKBOX_KIND THEN PLACETEXT_LEFT ELSE PLACETEXT_RIGHT)+(IF important[f] THEN NG_HIGHLABEL ELSE 0),visual,NIL]:newgadget,
  312.        taglist)))=NIL THEN RETURN 0
  313.     
  314.   ENDIF
  315.  
  316.   INC gadcount
  317.   INC realnum
  318.   realgad[a++]:=g
  319. ENDPROC g
  320.  
  321.  
  322. PROC extnewdoublebutton(sx,ex,kind,string,taglist)
  323.   DEF g
  324.   IF (g:=(context:=CreateGadgetA(kind,context,
  325.      [sx+startx,starty+(gadcount*(gadheight+3)),gadwidth-sx-ex,(2*gadheight)+3,string,NIL,realnum,0,visual,0]:newgadget,
  326.      taglist)))=NIL THEN RETURN 0
  327.   INC realnum
  328.   gadcount:=gadcount+2
  329.   realgad[a++]:=g
  330. ENDPROC g
  331.  
  332.  
  333.  
  334.